iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0
Mobile Development

肯定會斷賽之在 Android 開發使用設計模式系列 第 4

113/04 - 抽象工廠模式(Abstract Factory)- Java

  • 分享至 

  • xImage
  •  

介紹

工廠模式是個很好的設計模式,他把每個輸出拆成類別,有兩個優點

  1. 新增功能只要新增類別就好,版本控制就能減少衝突的可能
  2. 避免寫出義大利麵程式,有拆成類別就能更容易寫測試

種類

工廠模式有三種,分別是

  1. 簡單工廠模式
  2. 工廠模式
  3. 抽象工廠模式

就跟「HTML 不是程式語言一樣」,有些人會說「簡單工廠不是設計模式」,所以學「抽象工廠模式」就好

抽象工廠模式實作

假設我是補習班工廠,要產出工程師、設計師

基本建立

  1. 製造介面產品(Product)
public interface MakeVocationalProduct {
    String getName(String name);
}
  1. 創造介面工廠(Factory)
public interface CreateVocationalFactory {
    MakeVocationalProduct createVocational();
}

3-1. 製造工程師

public class MakeEngineerProduct implements MakeVocationalProduct {

    @Override
    public String getName(String name) {
        return "工程師: " + name;
    }
}

3-2. 製造設計師

public class MakeDesignerProduct implements MakeVocationalProduct {

    @Override
    public String getName(String name) {
        return "設計師: " + name;
    }
}

4-1. 創造工程師工廠

public class CreateEngineerFactory implements CreateVocationalFactory {
    @Override
    public MakeVocationalProduct createVocational() {
        return new MakeEngineerProduct();
    }
}

4-2. 創造設計師工廠

public class CreateDesignerFactory implements CreateVocationalFactory {
    @Override
    public MakeVocationalProduct createVocational() {
        return new MakeDesignerProduct();
    }
}

產生工程師或設計師

  1. 產生工程師
//產生工程師
CreateVocationalFactory engineer = new CreateEngineerFactory();
  1. 產生設計師
//產生設計師
CreateVocationalFactory designer = new CreateDesignerFactory();
  1. 印出日誌
//印出日誌
Log.d("Tag", engineer.createVocational().getStaff("Andy") + " / " + designer.createVocational().getStaff("AWD"));
  1. 產生結果
工程師: Andy / 設計師: AWD

上一篇
113/03 - 單例模式(Singleton)- Kotlin
下一篇
113/05 - 抽象工廠模式(Abstract Factory)- Kotlin
系列文
肯定會斷賽之在 Android 開發使用設計模式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言